home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 2 / AACD 2.iso / AACD / Magazine / GraphicsCards / StormMesa / src / fog.s < prev    next >
Text File  |  1999-02-04  |  24KB  |  1,324 lines

  1.  
  2. ; Storm C Compiler
  3. ; Work2:Mesa3/Mesa-3.0/src/fog.c
  4.     mc68030
  5.     mc68881
  6.     XREF    _gl_error
  7.     XREF    _gl_problem
  8.     XREF    _exp__r
  9.     XREF    _CC
  10.  
  11.     SECTION "_gl_Fogfv:0",CODE
  12.  
  13.  
  14. ;void gl_Fogfv( GLcontext *ctx, GLenum pname, const GLfloat *params )
  15.     XDEF    _gl_Fogfv
  16. _gl_Fogfv
  17.     move.l    a2,-(a7)
  18.     movem.l    $C(a7),d0/a1
  19.     move.l    $8(a7),a0
  20. L76
  21. ;   switch (pname)
  22.     sub.l    #$B61,d0
  23.     cmp.l    #5,d0
  24.     bhi    L91
  25.     move.l    L93(pc,d0.l*4),a2
  26.     jmp    (a2)
  27. L93
  28.     dc.l    L89
  29.     dc.l    L83
  30.     dc.l    L87
  31.     dc.l    L88
  32.     dc.l    L77
  33.     dc.l    L90
  34. ;      
  35. L77
  36. ;         m = (GLenum) (GLint) *params;
  37.     fmove.s    (a1),fp0
  38.     fmove.l    fp0,d0
  39. ;         if (m==GL_LINEAR || m==GL_EXP || m==GL_EXP2) 
  40.     cmp.l    #$2601,d0
  41.     beq.b    L80
  42. L78
  43.     cmp.l    #$800,d0
  44.     beq.b    L80
  45. L79
  46.     cmp.l    #$801,d0
  47.     bne.b    L81
  48. L80
  49. ;            ctx->Fog.Mode = m;
  50.     move.l    d0,$2300(a0)
  51.     bra    L92
  52. L81
  53. ;            gl_error( ctx, GL_INVALID_ENUM, "glFog" );
  54.     move.l    #L75,-(a7)
  55.     pea    $500.w
  56.     move.l    a0,-(a7)
  57.     jsr    _gl_error
  58.     add.w    #$C,a7
  59. L82
  60. ;         
  61.     bra    L92
  62. L83
  63. ;         if (*params<0.0) 
  64.     fmove.s    (a1),fp0
  65.     fcmp.d    #$.00000000.00000000,fp0
  66.     fboge.b    L85
  67. L84
  68. ;            gl_error( ctx, GL_INVALID_VALUE, "glFog" );
  69.     move.l    #L75,-(a7)
  70.     pea    $501.w
  71.     move.l    a0,-(a7)
  72.     jsr    _gl_error
  73.     add.w    #$C,a7
  74.     bra.b    L92
  75. L85
  76. ;            ctx->Fog.Density = *params;
  77.     move.l    (a1),$22F0(a0)
  78. L86
  79. ;         
  80.     bra.b    L92
  81. L87
  82. ;         ctx->Fog.Start = *params;
  83.     move.l    (a1),$22F4(a0)
  84. ;         
  85.     bra.b    L92
  86. L88
  87. ;         ctx->Fog.End = *params;
  88.     move.l    (a1),$22F8(a0)
  89. ;         
  90.     bra.b    L92
  91. L89
  92. ;         ctx->Fog.Index = *params;
  93.     move.l    (a1),$22FC(a0)
  94. ;         
  95.     bra.b    L92
  96. L90
  97. ;         ctx->Fog.Color[0] = params[0];
  98.     move.l    (a1),$22E0(a0)
  99. ;         ctx->Fog.Color[1] = params[1];
  100.     lea    $22E0(a0),a2
  101.     move.l    4(a1),4(a2)
  102. ;         ctx->Fog.Color[2] = params[2];
  103.     lea    $22E0(a0),a2
  104.     move.l    $8(a1),$8(a2)
  105. ;         ctx->Fog.Color[3] = params[3];
  106.     lea    $22E0(a0),a0
  107.     move.l    $C(a1),$C(a0)
  108. ;         
  109.     bra.b    L92
  110. L91
  111. ;         gl_error( ctx, GL_INVALID_ENUM, "glFog" );
  112.     move.l    #L75,-(a7)
  113.     pea    $500.w
  114.     move.l    a0,-(a7)
  115.     jsr    _gl_error
  116.     add.w    #$C,a7
  117. L92
  118.     move.l    (a7)+,a2
  119.     rts
  120.  
  121. L75
  122.     dc.b    'glFog',0
  123.  
  124.     SECTION "_gl_fog_rgba_vertices:0",CODE
  125.  
  126.     rts
  127.  
  128. ;void gl_fog_rgba_vertices( const GLcontext *ctx,
  129.     XDEF    _gl_fog_rgba_vertices
  130. _gl_fog_rgba_vertices
  131. L137    EQU    -$28
  132.     link    a5,#L137
  133.     movem.l    d2/d3/a2/a3,-(a7)
  134.     fmovem.x fp2/fp3/fp4/fp5/fp6/fp7,-(a7)
  135.     movem.l    $C(a5),d3/a3
  136.     move.l    $8(a5),a0
  137.     move.l    $14(a5),a2
  138. L95
  139. ;   GLfloat rFog = ctx->Fog.Color[0] * 255.0F;
  140.     fmove.s    $22E0(a0),fp0
  141.     fmul.s    #$.437F0000,fp0
  142.     fmove.s    fp0,fp7
  143. ;   GLfloat gFog = ctx->Fog.Color[1] * 255.0F;
  144.     lea    $22E0(a0),a1
  145.     fmove.s    4(a1),fp5
  146.     fmul.s    #$.437F0000,fp5
  147. ;   GLfloat bFog = ctx->Fog.Color[2] * 255.0F;
  148.     lea    $22E0(a0),a1
  149.     fmove.s    $8(a1),fp4
  150.     fmul.s    #$.437F0000,fp4
  151. ;   GLfloat end = ctx->Fog.End;
  152.     move.l    $22F8(a0),-$18(a5)
  153. ;   switch (ctx->Fog.Mode)
  154.     move.l    $2300(a0),d0
  155.     cmp.l    #$801,d0
  156.     beq    L122
  157.     bgt.b    L138
  158.     cmp.l    #$800,d0
  159.     beq    L109
  160.     bra    L135
  161. L138
  162.     cmp.l    #$2601,d0
  163.     beq.b    L96
  164.     bra    L135
  165. ;      
  166. L96
  167. ;         d = 1.0F / (ctx->Fog.End - ctx->Fog.Start);
  168.     fmove.s    $22F8(a0),fp0
  169.     fsub.s    $22F4(a0),fp0
  170.     fmove.s    #$.3F800000,fp2
  171.     fdiv.x    fp0,fp2
  172. ;         for (i=0;
  173.     moveq    #0,d2
  174.     bra    L107
  175. L97
  176. ;            GLfloat f = (end - ABSF(v[i][2])) * d;
  177.     move.l    d2,d0
  178.     asl.l    #4,d0
  179.     lea    0(a3,d0.l),a0
  180.     fmove.s    $8(a0),fp0
  181.     fcmp.s    #$.00000000,fp0
  182.     fboge.b    L99
  183. L98
  184.     move.l    d2,d0
  185.     asl.l    #4,d0
  186.     lea    0(a3,d0.l),a0
  187.     fmove.s    $8(a0),fp0
  188.     fneg.s    fp0
  189.     bra.b    L100
  190. L99
  191.     move.l    d2,d0
  192.     asl.l    #4,d0
  193.     lea    0(a3,d0.l),a0
  194.     fmove.s    $8(a0),fp0
  195. L100
  196.     fmove.s    -$18(a5),fp1
  197.     fsub.x    fp0,fp1
  198.     fmove.x    fp1,fp0
  199.     fmul.x    fp2,fp0
  200. ;            f = CLAMP( f, 0.0F, 1.0F );
  201.     fcmp.s    #$.00000000,fp0
  202.     fboge.b    L102
  203. L101
  204.     fmove.s    #$.00000000,fp0
  205.     bra.b    L106
  206. L102
  207.     fcmp.s    #$.3F800000,fp0
  208.     fbole.b    L104
  209. L103
  210.     fmove.s    #$.3F800000,fp0
  211. L104
  212. L105
  213. L106
  214. ;            color[i][0] = (GLint) (f * color[i][0] + (1.
  215.     moveq    #0,d0
  216.     move.b    0(a2,d2.l*4),d0
  217.     fmove.l    d0,fp1
  218.     fmul.x    fp0,fp1
  219.     fmove.s    #$.3F800000,fp3
  220.     fsub.x    fp0,fp3
  221.     fmul.x    fp7,fp3
  222.     fadd.x    fp3,fp1
  223.     fmove.l    fp1,d0
  224.     move.b    d0,0(a2,d2.l*4)
  225. ;            color[i][1] = (GLint) (f * color[i][1] + (1.
  226.     lea    0(a2,d2.l*4),a0
  227.     moveq    #0,d0
  228.     move.b    1(a0),d0
  229.     fmove.l    d0,fp1
  230.     fmul.x    fp0,fp1
  231.     fmove.s    #$.3F800000,fp3
  232.     fsub.x    fp0,fp3
  233.     fmul.x    fp5,fp3
  234.     fadd.x    fp3,fp1
  235.     fmove.l    fp1,d0
  236.     lea    0(a2,d2.l*4),a0
  237.     move.b    d0,1(a0)
  238. ;            color[i][2] = (GLint) (f * color[i][2] + (1.
  239.     lea    0(a2,d2.l*4),a0
  240.     moveq    #0,d0
  241.     move.b    2(a0),d0
  242.     fmove.l    d0,fp1
  243.     fmul.x    fp0,fp1
  244.     fmove.s    #$.3F800000,fp3
  245.     fsub.x    fp0,fp3
  246.     fmove.x    fp3,fp0
  247.     fmul.x    fp4,fp0
  248.     fadd.x    fp0,fp1
  249.     fmove.l    fp1,d0
  250.     lea    0(a2,d2.l*4),a0
  251.     move.b    d0,2(a0)
  252.     addq.l    #1,d2
  253. L107
  254.     cmp.l    d3,d2
  255.     blo    L97
  256. L108
  257. ;         
  258.     bra    L136
  259. L109
  260. ;         d = -ctx->Fog.Density;
  261.     fmove.s    $22F0(a0),fp2
  262.     fneg.s    fp2
  263. ;         for (i=0;
  264.     moveq    #0,d2
  265.     bra    L120
  266. L110
  267. ;            GLfloat f = exp( d * ABSF(v[i][2]) );
  268.     move.l    d2,d0
  269.     asl.l    #4,d0
  270.     lea    0(a3,d0.l),a0
  271.     fmove.s    $8(a0),fp0
  272.     fcmp.s    #$.00000000,fp0
  273.     fboge.b    L112
  274. L111
  275.     move.l    d2,d0
  276.     asl.l    #4,d0
  277.     lea    0(a3,d0.l),a0
  278.     fmove.s    $8(a0),fp0
  279.     fneg.s    fp0
  280.     bra.b    L113
  281. L112
  282.     move.l    d2,d0
  283.     asl.l    #4,d0
  284.     lea    0(a3,d0.l),a0
  285.     fmove.s    $8(a0),fp0
  286. L113
  287.     fmul.x    fp2,fp0
  288.     fmove.d    fp0,-(a7)
  289.     jsr    _exp__r
  290.     addq.w    #$8,a7
  291. ;            f = CLAMP( f, 0.0F, 1.0F );
  292.     fcmp.s    #$.00000000,fp0
  293.     fboge.b    L115
  294. L114
  295.     fmove.s    #$.00000000,fp0
  296.     bra.b    L119
  297. L115
  298.     fcmp.s    #$.3F800000,fp0
  299.     fbole.b    L117
  300. L116
  301.     fmove.s    #$.3F800000,fp0
  302. L117
  303. L118
  304. L119
  305. ;            color[i][0] = (GLint) (f * color[i][0] + (1.
  306.     moveq    #0,d0
  307.     move.b    0(a2,d2.l*4),d0
  308.     fmove.l    d0,fp1
  309.     fmul.x    fp0,fp1
  310.     fmove.s    #$.3F800000,fp3
  311.     fsub.x    fp0,fp3
  312.     fmul.x    fp7,fp3
  313.     fadd.x    fp3,fp1
  314.     fmove.l    fp1,d0
  315.     move.b    d0,0(a2,d2.l*4)
  316. ;            color[i][1] = (GLint) (f * color[i][1] + (1.
  317.     lea    0(a2,d2.l*4),a0
  318.     moveq    #0,d0
  319.     move.b    1(a0),d0
  320.     fmove.l    d0,fp1
  321.     fmul.x    fp0,fp1
  322.     fmove.s    #$.3F800000,fp3
  323.     fsub.x    fp0,fp3
  324.     fmul.x    fp5,fp3
  325.     fadd.x    fp3,fp1
  326.     fmove.l    fp1,d0
  327.     lea    0(a2,d2.l*4),a0
  328.     move.b    d0,1(a0)
  329. ;            color[i][2] = (GLint) (f * color[i][2] + (1.
  330.     lea    0(a2,d2.l*4),a0
  331.     moveq    #0,d0
  332.     move.b    2(a0),d0
  333.     fmove.l    d0,fp1
  334.     fmul.x    fp0,fp1
  335.     fmove.s    #$.3F800000,fp3
  336.     fsub.x    fp0,fp3
  337.     fmove.x    fp3,fp0
  338.     fmul.x    fp4,fp0
  339.     fadd.x    fp0,fp1
  340.     fmove.l    fp1,d0
  341.     lea    0(a2,d2.l*4),a0
  342.     move.b    d0,2(a0)
  343.     addq.l    #1,d2
  344. L120
  345.     cmp.l    d3,d2
  346.     blo    L110
  347. L121
  348. ;         
  349.     bra    L136
  350. L122
  351. ;         d = -(ctx->Fog.Density*ctx->Fog.Density);
  352.     fmove.s    $22F0(a0),fp2
  353.     fmul.s    $22F0(a0),fp2
  354.     fneg.s    fp2
  355. ;         for (i=0;
  356.     moveq    #0,d2
  357.     bra    L133
  358. L123
  359. ;            GLfloat z = ABSF(v[i][2]);
  360.     move.l    d2,d0
  361.     asl.l    #4,d0
  362.     lea    0(a3,d0.l),a0
  363.     fmove.s    $8(a0),fp0
  364.     fcmp.s    #$.00000000,fp0
  365.     fboge.b    L125
  366. L124
  367.     move.l    d2,d0
  368.     asl.l    #4,d0
  369.     lea    0(a3,d0.l),a0
  370.     fmove.s    $8(a0),fp0
  371.     fneg.s    fp0
  372.     bra.b    L126
  373. L125
  374.     move.l    d2,d0
  375.     asl.l    #4,d0
  376.     lea    0(a3,d0.l),a0
  377.     fmove.s    $8(a0),fp0
  378. L126
  379. ;            GLfloat f = exp( d * z*z );
  380.     fmove.x    fp2,fp1
  381.     fmul.x    fp0,fp1
  382.     fmul.x    fp0,fp1
  383.     fmove.x    fp1,fp0
  384.     fmove.d    fp0,-(a7)
  385.     jsr    _exp__r
  386.     addq.w    #$8,a7
  387. ;            f = CLAMP( f, 0.0F, 1.0F );
  388.     fcmp.s    #$.00000000,fp0
  389.     fboge.b    L128
  390. L127
  391.     fmove.s    #$.00000000,fp0
  392.     bra.b    L132
  393. L128
  394.     fcmp.s    #$.3F800000,fp0
  395.     fbole.b    L130
  396. L129
  397.     fmove.s    #$.3F800000,fp0
  398. L130
  399. L131
  400. L132
  401. ;            color[i][0] = (GLint) (f * color[i][0] + (1.
  402.     moveq    #0,d0
  403.     move.b    0(a2,d2.l*4),d0
  404.     fmove.l    d0,fp1
  405.     fmul.x    fp0,fp1
  406.     fmove.s    #$.3F800000,fp3
  407.     fsub.x    fp0,fp3
  408.     fmul.x    fp7,fp3
  409.     fadd.x    fp3,fp1
  410.     fmove.l    fp1,d0
  411.     move.b    d0,0(a2,d2.l*4)
  412. ;            color[i][1] = (GLint) (f * color[i][1] + (1.
  413.     lea    0(a2,d2.l*4),a0
  414.     moveq    #0,d0
  415.     move.b    1(a0),d0
  416.     fmove.l    d0,fp1
  417.     fmul.x    fp0,fp1
  418.     fmove.s    #$.3F800000,fp3
  419.     fsub.x    fp0,fp3
  420.     fmul.x    fp5,fp3
  421.     fadd.x    fp3,fp1
  422.     fmove.l    fp1,d0
  423.     lea    0(a2,d2.l*4),a0
  424.     move.b    d0,1(a0)
  425. ;            color[i][2] = (GLint) (f * color[i][2] + (1.
  426.     lea    0(a2,d2.l*4),a0
  427.     moveq    #0,d0
  428.     move.b    2(a0),d0
  429.     fmove.l    d0,fp1
  430.     fmul.x    fp0,fp1
  431.     fmove.s    #$.3F800000,fp3
  432.     fsub.x    fp0,fp3
  433.     fmove.x    fp3,fp0
  434.     fmul.x    fp4,fp0
  435.     fadd.x    fp0,fp1
  436.     fmove.l    fp1,d0
  437.     lea    0(a2,d2.l*4),a0
  438.     move.b    d0,2(a0)
  439.     addq.l    #1,d2
  440. L133
  441.     cmp.l    d3,d2
  442.     blo    L123
  443. L134
  444. ;         
  445.     bra.b    L136
  446. L135
  447. ;         gl_problem(ctx, "Bad fog mode in gl_fog_rgba_verti
  448.     move.l    #L94,-(a7)
  449.     move.l    a0,-(a7)
  450.     jsr    _gl_problem
  451.     addq.w    #$8,a7
  452.     fmovem.x (a7)+,fp2/fp3/fp4/fp5/fp6/fp7
  453.     movem.l    (a7)+,d2/d3/a2/a3
  454.     unlk    a5
  455.     rts
  456. L136
  457. ;         return;
  458.     fmovem.x (a7)+,fp2/fp3/fp4/fp5/fp6/fp7
  459.     movem.l    (a7)+,d2/d3/a2/a3
  460.     unlk    a5
  461.     rts
  462.  
  463. L94
  464.     dc.b    'Bad fog mode in gl_fog_rgba_vertices',0
  465.  
  466.     SECTION "_gl_fog_ci_vertices:0",CODE
  467.  
  468.  
  469. ;            GLfloat fogEnd = ctx->Fog.End;
  470.     XDEF    _gl_fog_ci_vertices
  471. _gl_fog_ci_vertices
  472.     movem.l    d2/d3/a2/a3,-(a7)
  473.     fmovem.x fp2/fp3/fp4/fp5,-(a7)
  474.     movem.l    $48(a7),d3/a2/a3
  475.     move.l    $44(a7),a0
  476. L140
  477. ;   switch (ctx->Fog.Mode)
  478.     move.l    $2300(a0),d0
  479.     cmp.l    #$801,d0
  480.     beq    L167
  481.     bgt.b    L182
  482.     cmp.l    #$800,d0
  483.     beq    L154
  484.     bra    L180
  485. L182
  486.     cmp.l    #$2601,d0
  487.     beq.b    L141
  488.     bra    L180
  489. ;      
  490. L141
  491. ;            GLfloat d = 1.0F / (ctx->Fog.End - ctx->Fog.
  492.     fmove.s    $22F8(a0),fp0
  493.     fsub.s    $22F4(a0),fp0
  494.     fmove.s    #$.3F800000,fp4
  495.     fdiv.x    fp0,fp4
  496. ;            GLfloat fogindex = ctx->Fog.Index;
  497.     fmove.s    $22FC(a0),fp3
  498. ;            GLfloat fogend = ctx->Fog.End;
  499.     fmove.s    $22F8(a0),fp2
  500. ;            for (i=0;
  501.     moveq    #0,d0
  502.     bra    L152
  503. L142
  504. ;               GLfloat f = (fogend - ABSF(v[i][2])) *
  505.     move.l    d0,d1
  506.     asl.l    #4,d1
  507.     lea    0(a2,d1.l),a0
  508.     fmove.s    $8(a0),fp0
  509.     fcmp.s    #$.00000000,fp0
  510.     fboge.b    L144
  511. L143
  512.     move.l    d0,d1
  513.     asl.l    #4,d1
  514.     lea    0(a2,d1.l),a0
  515.     fmove.s    $8(a0),fp0
  516.     fneg.s    fp0
  517.     bra.b    L145
  518. L144
  519.     move.l    d0,d1
  520.     asl.l    #4,d1
  521.     lea    0(a2,d1.l),a0
  522.     fmove.s    $8(a0),fp0
  523. L145
  524.     fmove.x    fp2,fp1
  525.     fsub.x    fp0,fp1
  526.     fmove.x    fp1,fp0
  527.     fmul.x    fp4,fp0
  528. ;               f = CLAMP( f, 0.0F, 1.0F );
  529.     fcmp.s    #$.00000000,fp0
  530.     fboge.b    L147
  531. L146
  532.     fmove.s    #$.00000000,fp0
  533.     bra.b    L151
  534. L147
  535.     fcmp.s    #$.3F800000,fp0
  536.     fbole.b    L149
  537. L148
  538.     fmove.s    #$.3F800000,fp0
  539. L149
  540. L150
  541. L151
  542. ;               indx[i] = (GLint)
  543.     fmove.l    0(a3,d0.l*4),fp1
  544.     fmove.s    #$.3F800000,fp5
  545.     fsub.x    fp0,fp5
  546.     fmove.x    fp5,fp0
  547.     fmul.x    fp3,fp0
  548.     fadd.x    fp0,fp1
  549.     fmove.l    fp1,d1
  550.     move.l    d1,0(a3,d0.l*4)
  551.     addq.l    #1,d0
  552. L152
  553.     cmp.l    d3,d0
  554.     blo    L142
  555. L153
  556. ;         
  557.     bra    L181
  558. L154
  559. ;            GLfloat d = -ctx->Fog.Density;
  560.     fmove.s    $22F0(a0),fp2
  561.     fneg.s    fp2
  562. ;            GLfloat fogindex = ctx->Fog.Index;
  563.     fmove.s    $22FC(a0),fp3
  564. ;            for (i=0;
  565.     moveq    #0,d2
  566.     bra    L165
  567. L155
  568. ;               GLfloat f = exp( d * ABSF(v[i][2]) );
  569.     move.l    d2,d0
  570.     asl.l    #4,d0
  571.     lea    0(a2,d0.l),a0
  572.     fmove.s    $8(a0),fp0
  573.     fcmp.s    #$.00000000,fp0
  574.     fboge.b    L157
  575. L156
  576.     move.l    d2,d0
  577.     asl.l    #4,d0
  578.     lea    0(a2,d0.l),a0
  579.     fmove.s    $8(a0),fp0
  580.     fneg.s    fp0
  581.     bra.b    L158
  582. L157
  583.     move.l    d2,d0
  584.     asl.l    #4,d0
  585.     lea    0(a2,d0.l),a0
  586.     fmove.s    $8(a0),fp0
  587. L158
  588.     fmul.x    fp2,fp0
  589.     fmove.d    fp0,-(a7)
  590.     jsr    _exp__r
  591.     addq.w    #$8,a7
  592. ;               f = CLAMP( f, 0.0F, 1.0F );
  593.     fcmp.s    #$.00000000,fp0
  594.     fboge.b    L160
  595. L159
  596.     fmove.s    #$.00000000,fp0
  597.     bra.b    L164
  598. L160
  599.     fcmp.s    #$.3F800000,fp0
  600.     fbole.b    L162
  601. L161
  602.     fmove.s    #$.3F800000,fp0
  603. L162
  604. L163
  605. L164
  606. ;               indx[i] = (GLint)
  607.     fmove.l    0(a3,d2.l*4),fp1
  608.     fmove.s    #$.3F800000,fp4
  609.     fsub.x    fp0,fp4
  610.     fmove.x    fp4,fp0
  611.     fmul.x    fp3,fp0
  612.     fadd.x    fp0,fp1
  613.     fmove.l    fp1,d0
  614.     move.l    d0,0(a3,d2.l*4)
  615.     addq.l    #1,d2
  616. L165
  617.     cmp.l    d3,d2
  618.     blo    L155
  619. L166
  620. ;         
  621.     bra    L181
  622. L167
  623. ;            GLfloat d = -(ctx->Fog.Density*ctx->Fog.Dens
  624.     fmove.s    $22F0(a0),fp2
  625.     fmul.s    $22F0(a0),fp2
  626.     fneg.s    fp2
  627. ;            GLfloat fogindex = ctx->Fog.Index;
  628.     fmove.s    $22FC(a0),fp3
  629. ;            for (i=0;
  630.     moveq    #0,d2
  631.     bra    L178
  632. L168
  633. ;               GLfloat z = ABSF(v[i][2]);
  634.     move.l    d2,d0
  635.     asl.l    #4,d0
  636.     lea    0(a2,d0.l),a0
  637.     fmove.s    $8(a0),fp0
  638.     fcmp.s    #$.00000000,fp0
  639.     fboge.b    L170
  640. L169
  641.     move.l    d2,d0
  642.     asl.l    #4,d0
  643.     lea    0(a2,d0.l),a0
  644.     fmove.s    $8(a0),fp1
  645.     fneg.s    fp1
  646.     bra.b    L171
  647. L170
  648.     move.l    d2,d0
  649.     asl.l    #4,d0
  650.     lea    0(a2,d0.l),a0
  651.     fmove.s    $8(a0),fp1
  652. L171
  653. ;               GLfloat f = exp( -d * z*z );
  654.     fmove.x    fp2,fp0
  655.     fneg.s    fp0
  656.     fmul.x    fp1,fp0
  657.     fmul.x    fp1,fp0
  658.     fmove.d    fp0,-(a7)
  659.     jsr    _exp__r
  660.     addq.w    #$8,a7
  661. ;               f = CLAMP( f, 0.0F, 1.0F );
  662.     fcmp.s    #$.00000000,fp0
  663.     fboge.b    L173
  664. L172
  665.     fmove.s    #$.00000000,fp0
  666.     bra.b    L177
  667. L173
  668.     fcmp.s    #$.3F800000,fp0
  669.     fbole.b    L175
  670. L174
  671.     fmove.s    #$.3F800000,fp0
  672. L175
  673. L176
  674. L177
  675. ;               indx[i] = (GLint)
  676.     fmove.l    0(a3,d2.l*4),fp1
  677.     fmove.s    #$.3F800000,fp4
  678.     fsub.x    fp0,fp4
  679.     fmove.x    fp4,fp0
  680.     fmul.x    fp3,fp0
  681.     fadd.x    fp0,fp1
  682.     fmove.l    fp1,d0
  683.     move.l    d0,0(a3,d2.l*4)
  684.     addq.l    #1,d2
  685. L178
  686.     cmp.l    d3,d2
  687.     blo    L168
  688. L179
  689. ;         
  690.     bra.b    L181
  691. L180
  692. ;         gl_problem(ctx, "Bad fog mode in gl_fog_ci_vertice
  693.     move.l    #L139,-(a7)
  694.     move.l    a0,-(a7)
  695.     jsr    _gl_problem
  696.     addq.w    #$8,a7
  697.     fmovem.x (a7)+,fp2/fp3/fp4/fp5
  698.     movem.l    (a7)+,d2/d3/a2/a3
  699.     rts
  700. L181
  701. ;         return;
  702.     fmovem.x (a7)+,fp2/fp3/fp4/fp5
  703.     movem.l    (a7)+,d2/d3/a2/a3
  704.     rts
  705.  
  706. L139
  707.     dc.b    'Bad fog mode in gl_fog_ci_vertices',0
  708.  
  709.     SECTION "_gl_fog_rgba_pixels:0",CODE
  710.  
  711.  
  712. ;void gl_fog_rgba_pixels( const GLcontext *ctx,
  713.     XDEF    _gl_fog_rgba_pixels
  714. _gl_fog_rgba_pixels
  715. L223    EQU    -$70
  716.     link    a5,#L223
  717.     movem.l    d2/d3/a2-a4,-(a7)
  718.     fmovem.x fp2/fp3/fp4/fp5/fp6/fp7,-(a7)
  719.     movem.l    $C(a5),d3/a4
  720.     move.l    $14(a5),a2
  721.     move.l    $8(a5),a3
  722. L184
  723. ;   GLfloat c = ctx->ProjectionMatrix[10];
  724.     lea    $1284(a3),a0
  725.     move.l    $28(a0),-4(a5)
  726. ;   GLfloat d = ctx->ProjectionMatrix[14];
  727.     lea    $1284(a3),a0
  728.     move.l    $38(a0),-$8(a5)
  729. ;   GLfloat rFog = ctx->Fog.Color[0] * 255.0F;
  730.     fmove.s    $22E0(a3),fp5
  731.     fmul.s    #$.437F0000,fp5
  732. ;   GLfloat gFog = ctx->Fog.Color[1] * 255.0F;
  733.     lea    $22E0(a3),a0
  734.     fmove.s    4(a0),fp4
  735.     fmul.s    #$.437F0000,fp4
  736. ;   GLfloat bFog = ctx->Fog.Color[2] * 255.0F;
  737.     lea    $22E0(a3),a0
  738.     fmove.s    $8(a0),fp3
  739.     fmul.s    #$.437F0000,fp3
  740. ;   GLfloat tz = ctx->Viewport.Tz;
  741.     move.l    a3,a0
  742.     add.l    #$E540,a0
  743.     move.l    $2C(a0),-$1C(a5)
  744. ;   GLfloat szInv = 1.0F / ctx->Viewport.Sz;
  745.     move.l    a3,a0
  746.     add.l    #$E540,a0
  747.     fmove.s    #$.3F800000,fp0
  748.     fdiv.s    $20(a0),fp0
  749.     fmove.s    fp0,-$20(a5)
  750. ;   switch (ctx->Fog.Mode)
  751.     move.l    $2300(a3),d0
  752.     cmp.l    #$801,d0
  753.     beq    L209
  754.     bgt.b    L224
  755.     cmp.l    #$800,d0
  756.     beq    L197
  757.     bra    L221
  758. L224
  759.     cmp.l    #$2601,d0
  760.     beq.b    L185
  761.     bra    L221
  762. ;      
  763. L185
  764. ;            GLfloat fogEnd = ctx->Fog.End;
  765.     move.l    $22F8(a3),-$24(a5)
  766. ;            GLfloat fogScale = 1.0F / (ctx->Fog.End - ct
  767.     fmove.s    $22F8(a3),fp0
  768.     fsub.s    $22F4(a3),fp0
  769.     fmove.s    #$.3F800000,fp1
  770.     fdiv.x    fp0,fp1
  771.     fmove.s    fp1,-$28(a5)
  772. ;            for (i=0;
  773.     moveq    #0,d2
  774.     bra    L195
  775. L186
  776. ;               GLfloat ndcz = ((GLfloat) z[i] - tz) *
  777.     moveq    #0,d0
  778.     move.w    0(a4,d2.l*2),d0
  779.     fmove.l    d0,fp1
  780.     fsub.s    -$1C(a5),fp1
  781.     fmul.s    -$20(a5),fp1
  782. ;               GLfloat eyez = -d / (c+ndcz);
  783.     fmove.s    -$8(a5),fp0
  784.     fneg.s    fp0
  785.     fadd.s    -4(a5),fp1
  786.     fdiv.x    fp1,fp0
  787. ;               if (eyez < 0.0)  
  788.     fmove.x    fp0,fp1
  789.     fcmp.d    #$.00000000.00000000,fp1
  790.     fboge.b    L188
  791. L187
  792. ;               if (eyez < 0.0)  eyez
  793.     fneg.s    fp0
  794. L188
  795. ;               f = (fogEnd - eyez) * fogScale;
  796.     fmove.s    -$24(a5),fp1
  797.     fsub.x    fp0,fp1
  798.     fmove.x    fp1,fp0
  799.     fmul.s    -$28(a5),fp0
  800. ;               f = CLAMP( f, 0.0F, 1.0F );
  801.     fcmp.s    #$.00000000,fp0
  802.     fboge.b    L190
  803. L189
  804.     fmove.s    #$.00000000,fp0
  805.     bra.b    L194
  806. L190
  807.     fcmp.s    #$.3F800000,fp0
  808.     fbole.b    L192
  809. L191
  810.     fmove.s    #$.3F800000,fp0
  811. L192
  812. L193
  813. L194
  814. ;               g = 1.0F - f;
  815.     fmove.s    #$.3F800000,fp1
  816.     fsub.x    fp0,fp1
  817. ;               rgba[i][RCOMP] = (GLint) (f * rgba[i][
  818.     moveq    #0,d0
  819.     move.b    0(a2,d2.l*4),d0
  820.     fmove.l    d0,fp2
  821.     fmul.x    fp0,fp2
  822.     fmove.x    fp1,fp6
  823.     fmul.x    fp5,fp6
  824.     fadd.x    fp6,fp2
  825.     fmove.l    fp2,d0
  826.     move.b    d0,0(a2,d2.l*4)
  827. ;               rgba[i][GCOMP] = (GLint) (f * rgba[i][
  828.     lea    0(a2,d2.l*4),a0
  829.     moveq    #0,d0
  830.     move.b    1(a0),d0
  831.     fmove.l    d0,fp2
  832.     fmul.x    fp0,fp2
  833.     fmove.x    fp1,fp6
  834.     fmul.x    fp4,fp6
  835.     fadd.x    fp6,fp2
  836.     fmove.l    fp2,d0
  837.     lea    0(a2,d2.l*4),a0
  838.     move.b    d0,1(a0)
  839. ;               rgba[i][BCOMP] = (GLint) (f * rgba[i][
  840.     lea    0(a2,d2.l*4),a0
  841.     moveq    #0,d0
  842.     move.b    2(a0),d0
  843.     fmove.l    d0,fp2
  844.     fmul.x    fp2,fp0
  845.     fmul.x    fp3,fp1
  846.     fadd.x    fp1,fp0
  847.     fmove.l    fp0,d0
  848.     lea    0(a2,d2.l*4),a0
  849.     move.b    d0,2(a0)
  850.     addq.l    #1,d2
  851. L195
  852.     cmp.l    d3,d2
  853.     blo    L186
  854. L196
  855. ;         
  856.     bra    L222
  857. L197
  858. ;         for (i=0;
  859.     moveq    #0,d2
  860.     bra    L207
  861. L198
  862. ;            GLfloat ndcz = ((GLfloat) z[i] - tz) * szInv;
  863.     moveq    #0,d0
  864.     move.w    0(a4,d2.l*2),d0
  865.     fmove.l    d0,fp1
  866.     fsub.s    -$1C(a5),fp1
  867.     fmul.s    -$20(a5),fp1
  868. ;            GLfloat eyez = -d / (c+ndcz);
  869.     fmove.s    -$8(a5),fp0
  870.     fneg.s    fp0
  871.     fadd.s    -4(a5),fp1
  872.     fdiv.x    fp1,fp0
  873. ;            if (eyez < 0.0)  
  874.     fmove.x    fp0,fp1
  875.     fcmp.d    #$.00000000.00000000,fp1
  876.     fboge.b    L200
  877. L199
  878. ;            if (eyez < 0.0)  eyez = -ey
  879.     fneg.s    fp0
  880. L200
  881. ;            f = exp( -ctx->Fog.Density * eyez );
  882.     fmove.s    $22F0(a3),fp1
  883.     fneg.s    fp1
  884.     fmul.x    fp0,fp1
  885.     fmove.x    fp1,fp0
  886.     fmove.d    fp0,-(a7)
  887.     jsr    _exp__r
  888.     addq.w    #$8,a7
  889. ;            f = CLAMP( f, 0.0F, 1.0F );
  890.     fcmp.s    #$.00000000,fp0
  891.     fboge.b    L202
  892. L201
  893.     fmove.s    #$.00000000,fp0
  894.     bra.b    L206
  895. L202
  896.     fcmp.s    #$.3F800000,fp0
  897.     fbole.b    L204
  898. L203
  899.     fmove.s    #$.3F800000,fp0
  900. L204
  901. L205
  902. L206
  903. ;            g = 1.0F - f;
  904.     fmove.s    #$.3F800000,fp1
  905.     fsub.x    fp0,fp1
  906. ;            rgba[i][RCOMP] = (GLint) (f * rgba[i][RCOMP]
  907.     moveq    #0,d0
  908.     move.b    0(a2,d2.l*4),d0
  909.     fmove.l    d0,fp2
  910.     fmul.x    fp0,fp2
  911.     fmove.x    fp1,fp6
  912.     fmul.x    fp5,fp6
  913.     fadd.x    fp6,fp2
  914.     fmove.l    fp2,d0
  915.     move.b    d0,0(a2,d2.l*4)
  916. ;            rgba[i][GCOMP] = (GLint) (f * rgba[i][GCOMP]
  917.     lea    0(a2,d2.l*4),a0
  918.     moveq    #0,d0
  919.     move.b    1(a0),d0
  920.     fmove.l    d0,fp2
  921.     fmul.x    fp0,fp2
  922.     fmove.x    fp1,fp6
  923.     fmul.x    fp4,fp6
  924.     fadd.x    fp6,fp2
  925.     fmove.l    fp2,d0
  926.     lea    0(a2,d2.l*4),a0
  927.     move.b    d0,1(a0)
  928. ;            rgba[i][BCOMP] = (GLint) (f * rgba[i][BCOMP]
  929.     lea    0(a2,d2.l*4),a0
  930.     moveq    #0,d0
  931.     move.b    2(a0),d0
  932.     fmove.l    d0,fp2
  933.     fmul.x    fp2,fp0
  934.     fmul.x    fp3,fp1
  935.     fadd.x    fp1,fp0
  936.     fmove.l    fp0,d0
  937.     lea    0(a2,d2.l*4),a0
  938.     move.b    d0,2(a0)
  939.     addq.l    #1,d2
  940. L207
  941.     cmp.l    d3,d2
  942.     blo    L198
  943. L208
  944. ;         
  945.     bra    L222
  946. L209
  947. ;            GLfloat negDensitySquared = -ctx->Fog.Densit
  948.     move.l    $22F0(a3),-$3C(a5)
  949.     fmove.s    -$3C(a5),fp0
  950.     fneg.s    fp0
  951.     fmove.s    fp0,-$3C(a5)
  952.     fmove.s    -$3C(a5),fp0
  953.     fmul.s    $22F0(a3),fp0
  954.     fmove.s    fp0,-$3C(a5)
  955. ;            for (i=0;
  956.     moveq    #0,d2
  957.     bra    L219
  958. L210
  959. ;               GLfloat ndcz = ((GLfloat) z[i] - tz) *
  960.     moveq    #0,d0
  961.     move.w    0(a4,d2.l*2),d0
  962.     fmove.l    d0,fp1
  963.     fsub.s    -$1C(a5),fp1
  964.     fmul.s    -$20(a5),fp1
  965. ;               GLfloat eyez = -d / (c+ndcz);
  966.     fmove.s    -$8(a5),fp0
  967.     fneg.s    fp0
  968.     fadd.s    -4(a5),fp1
  969.     fdiv.x    fp1,fp0
  970. ;               if (eyez < 0.0)  
  971.     fmove.x    fp0,fp1
  972.     fcmp.d    #$.00000000.00000000,fp1
  973.     fboge.b    L212
  974. L211
  975. ;               if (eyez < 0.0)  eyez
  976.     fneg.s    fp0
  977. L212
  978. ;               f = exp( negDensitySquared * eyez*eyez
  979.     fmove.s    -$3C(a5),fp1
  980.     fmul.x    fp0,fp1
  981.     fmul.x    fp0,fp1
  982.     fmove.x    fp1,fp0
  983.     fmove.d    fp0,-(a7)
  984.     jsr    _exp__r
  985.     addq.w    #$8,a7
  986. ;               f = CLAMP( f, 0.0F, 1.0F );
  987.     fcmp.s    #$.00000000,fp0
  988.     fboge.b    L214
  989. L213
  990.     fmove.s    #$.00000000,fp0
  991.     bra.b    L218
  992. L214
  993.     fcmp.s    #$.3F800000,fp0
  994.     fbole.b    L216
  995. L215
  996.     fmove.s    #$.3F800000,fp0
  997. L216
  998. L217
  999. L218
  1000. ;               g = 1.0F - f;
  1001.     fmove.s    #$.3F800000,fp1
  1002.     fsub.x    fp0,fp1
  1003. ;               rgba[i][RCOMP] = (GLint) (f * rgba[i][
  1004.     moveq    #0,d0
  1005.     move.b    0(a2,d2.l*4),d0
  1006.     fmove.l    d0,fp2
  1007.     fmul.x    fp0,fp2
  1008.     fmove.x    fp1,fp6
  1009.     fmul.x    fp5,fp6
  1010.     fadd.x    fp6,fp2
  1011.     fmove.l    fp2,d0
  1012.     move.b    d0,0(a2,d2.l*4)
  1013. ;               rgba[i][GCOMP] = (GLint) (f * rgba[i][
  1014.     lea    0(a2,d2.l*4),a0
  1015.     moveq    #0,d0
  1016.     move.b    1(a0),d0
  1017.     fmove.l    d0,fp2
  1018.     fmul.x    fp0,fp2
  1019.     fmove.x    fp1,fp6
  1020.     fmul.x    fp4,fp6
  1021.     fadd.x    fp6,fp2
  1022.     fmove.l    fp2,d0
  1023.     lea    0(a2,d2.l*4),a0
  1024.     move.b    d0,1(a0)
  1025. ;               rgba[i][BCOMP] = (GLint) (f * rgba[i][
  1026.     lea    0(a2,d2.l*4),a0
  1027.     moveq    #0,d0
  1028.     move.b    2(a0),d0
  1029.     fmove.l    d0,fp2
  1030.     fmul.x    fp2,fp0
  1031.     fmul.x    fp3,fp1
  1032.     fadd.x    fp1,fp0
  1033.     fmove.l    fp0,d0
  1034.     lea    0(a2,d2.l*4),a0
  1035.     move.b    d0,2(a0)
  1036.     addq.l    #1,d2
  1037. L219
  1038.     cmp.l    d3,d2
  1039.     blo    L210
  1040. L220
  1041. ;         
  1042.     bra.b    L222
  1043. L221
  1044. ;         gl_problem(ctx, "Bad fog mode in gl_fog_rgba_pixel
  1045.     move.l    #L183,-(a7)
  1046.     move.l    a3,-(a7)
  1047.     jsr    _gl_problem
  1048.     addq.w    #$8,a7
  1049.     fmovem.x (a7)+,fp2/fp3/fp4/fp5/fp6/fp7
  1050.     movem.l    (a7)+,d2/d3/a2-a4
  1051.     unlk    a5
  1052.     rts
  1053. L222
  1054. ;         return;
  1055.     fmovem.x (a7)+,fp2/fp3/fp4/fp5/fp6/fp7
  1056.     movem.l    (a7)+,d2/d3/a2-a4
  1057.     unlk    a5
  1058.     rts
  1059.  
  1060. L183
  1061.     dc.b    'Bad fog mode in gl_fog_rgba_pixels',0
  1062.  
  1063.     SECTION "_gl_fog_ci_pixels:0",CODE
  1064.  
  1065.  
  1066. ;void gl_fog_ci_pixels( const GLcontext *ctx,
  1067.     XDEF    _gl_fog_ci_pixels
  1068. _gl_fog_ci_pixels
  1069. L265    EQU    -$3C
  1070.     link    a5,#L265
  1071.     movem.l    d2/d3/a2-a4,-(a7)
  1072.     fmovem.x fp2/fp3/fp4/fp5/fp6/fp7,-(a7)
  1073.     movem.l    $C(a5),d3/a4
  1074.     move.l    $8(a5),a2
  1075.     move.l    $14(a5),a3
  1076. L226
  1077. ;   GLfloat c = ctx->ProjectionMatrix[10];
  1078.     lea    $1284(a2),a0
  1079.     fmove.s    $28(a0),fp5
  1080. ;   GLfloat d = ctx->ProjectionMatrix[14];
  1081.     lea    $1284(a2),a0
  1082.     fmove.s    $38(a0),fp4
  1083. ;   GLfloat tz = ctx->Viewport.Tz;
  1084.     move.l    a2,a0
  1085.     add.l    #$E540,a0
  1086.     fmove.s    $2C(a0),fp3
  1087. ;   GLfloat szInv = 1.0F / ctx->Viewport.Sz;
  1088.     move.l    a2,a0
  1089.     add.l    #$E540,a0
  1090.     fmove.s    #$.3F800000,fp2
  1091.     fdiv.s    $20(a0),fp2
  1092. ;   switch (ctx->Fog.Mode)
  1093.     move.l    $2300(a2),d0
  1094.     cmp.l    #$801,d0
  1095.     beq    L251
  1096.     bgt.b    L266
  1097.     cmp.l    #$800,d0
  1098.     beq    L239
  1099.     bra    L263
  1100. L266
  1101.     cmp.l    #$2601,d0
  1102.     beq.b    L227
  1103.     bra    L263
  1104. ;      
  1105. L227
  1106. ;            GLfloat fogEnd = ctx->Fog.End;
  1107.     move.l    $22F8(a2),-$18(a5)
  1108. ;            GLfloat fogScale = 1.0F / (ctx->Fog.End - ct
  1109.     fmove.s    $22F8(a2),fp0
  1110.     fsub.s    $22F4(a2),fp0
  1111.     fmove.s    #$.3F800000,fp1
  1112.     fdiv.x    fp0,fp1
  1113.     fmove.s    fp1,fp7
  1114. ;            for (i=0;
  1115.     moveq    #0,d2
  1116.     bra    L237
  1117. L228
  1118. ;               GLfloat ndcz = ((GLfloat) z[i] - tz) *
  1119.     moveq    #0,d0
  1120.     move.w    0(a4,d2.l*2),d0
  1121.     fmove.l    d0,fp1
  1122.     fsub.x    fp3,fp1
  1123.     fmul.x    fp2,fp1
  1124. ;               GLfloat eyez = -d / (c+ndcz);
  1125.     fmove.x    fp4,fp0
  1126.     fneg.s    fp0
  1127.     fadd.x    fp5,fp1
  1128.     fdiv.x    fp1,fp0
  1129. ;               if (eyez < 0.0)  
  1130.     fmove.x    fp0,fp1
  1131.     fcmp.d    #$.00000000.00000000,fp1
  1132.     fboge.b    L230
  1133. L229
  1134. ;               if (eyez < 0.0)  eyez
  1135.     fneg.s    fp0
  1136. L230
  1137. ;               f = (fogEnd - eyez) * fogScale;
  1138.     fmove.s    -$18(a5),fp1
  1139.     fsub.x    fp0,fp1
  1140.     fmove.x    fp1,fp0
  1141.     fmul.x    fp7,fp0
  1142. ;               f = CLAMP( f, 0.0F, 1.0F );
  1143.     fcmp.s    #$.00000000,fp0
  1144.     fboge.b    L232
  1145. L231
  1146.     fmove.s    #$.00000000,fp0
  1147.     bra.b    L236
  1148. L232
  1149.     fcmp.s    #$.3F800000,fp0
  1150.     fbole.b    L234
  1151. L233
  1152.     fmove.s    #$.3F800000,fp0
  1153. L234
  1154. L235
  1155. L236
  1156. ;               index[i] = (GLuint) ((GLfloat) index[i
  1157.     fmove.l    0(a3,d2.l*4),fp1
  1158.     fmove.s    #$.3F800000,fp6
  1159.     fsub.x    fp0,fp6
  1160.     fmove.x    fp6,fp0
  1161.     fmul.s    $22FC(a2),fp0
  1162.     fadd.x    fp0,fp1
  1163.     fmove.l    fp1,d0
  1164.     move.l    d0,0(a3,d2.l*4)
  1165.     addq.l    #1,d2
  1166. L237
  1167.     cmp.l    d3,d2
  1168.     blo    L228
  1169. L238
  1170. ;         
  1171.     bra    L264
  1172. L239
  1173. ;         for (i=0;
  1174.     moveq    #0,d2
  1175.     bra    L249
  1176. L240
  1177. ;            GLfloat ndcz = ((GLfloat) z[i] - tz) * szInv;
  1178.     moveq    #0,d0
  1179.     move.w    0(a4,d2.l*2),d0
  1180.     fmove.l    d0,fp1
  1181.     fsub.x    fp3,fp1
  1182.     fmul.x    fp2,fp1
  1183. ;            GLfloat eyez = -d / (c+ndcz);
  1184.     fmove.x    fp4,fp0
  1185.     fneg.s    fp0
  1186.     fadd.x    fp5,fp1
  1187.     fdiv.x    fp1,fp0
  1188. ;            if (eyez < 0.0)  
  1189.     fmove.x    fp0,fp1
  1190.     fcmp.d    #$.00000000.00000000,fp1
  1191.     fboge.b    L242
  1192. L241
  1193. ;            if (eyez < 0.0)  eyez = -ey
  1194.     fneg.s    fp0
  1195. L242
  1196. ;            f = exp( -ctx->Fog.Density * eyez );
  1197.     fmove.s    $22F0(a2),fp1
  1198.     fneg.s    fp1
  1199.     fmul.x    fp0,fp1
  1200.     fmove.x    fp1,fp0
  1201.     fmove.d    fp0,-(a7)
  1202.     jsr    _exp__r
  1203.     addq.w    #$8,a7
  1204. ;            f = CLAMP( f, 0.0F, 1.0F );
  1205.     fcmp.s    #$.00000000,fp0
  1206.     fboge.b    L244
  1207. L243
  1208.     fmove.s    #$.00000000,fp0
  1209.     bra.b    L248
  1210. L244
  1211.     fcmp.s    #$.3F800000,fp0
  1212.     fbole.b    L246
  1213. L245
  1214.     fmove.s    #$.3F800000,fp0
  1215. L246
  1216. L247
  1217. L248
  1218. ;            index[i] = (GLuint) ((GLfloat) index[i] + (1
  1219.     fmove.l    0(a3,d2.l*4),fp1
  1220.     fmove.s    #$.3F800000,fp6
  1221.     fsub.x    fp0,fp6
  1222.     fmove.x    fp6,fp0
  1223.     fmul.s    $22FC(a2),fp0
  1224.     fadd.x    fp0,fp1
  1225.     fmove.l    fp1,d0
  1226.     move.l    d0,0(a3,d2.l*4)
  1227.     addq.l    #1,d2
  1228. L249
  1229.     cmp.l    d3,d2
  1230.     blo    L240
  1231. L250
  1232. ;         
  1233.     bra    L264
  1234. L251
  1235. ;            GLfloat negDensitySquared = -ctx->Fog.Densit
  1236.     fmove.s    $22F0(a2),fp0
  1237.     fneg.s    fp0
  1238.     fmove.s    fp0,fp7
  1239.     fmove.x    fp7,fp0
  1240.     fmul.s    $22F0(a2),fp0
  1241.     fmove.s    fp0,fp7
  1242. ;            for (i=0;
  1243.     moveq    #0,d2
  1244.     bra    L261
  1245. L252
  1246. ;               GLfloat ndcz = ((GLfloat) z[i] - tz) *
  1247.     moveq    #0,d0
  1248.     move.w    0(a4,d2.l*2),d0
  1249.     fmove.l    d0,fp1
  1250.     fsub.x    fp3,fp1
  1251.     fmul.x    fp2,fp1
  1252. ;               GLfloat eyez = -d / (c+ndcz);
  1253.     fmove.x    fp4,fp0
  1254.     fneg.s    fp0
  1255.     fadd.x    fp5,fp1
  1256.     fdiv.x    fp1,fp0
  1257. ;               if (eyez < 0.0)  
  1258.     fmove.x    fp0,fp1
  1259.     fcmp.d    #$.00000000.00000000,fp1
  1260.     fboge.b    L254
  1261. L253
  1262. ;               if (eyez < 0.0)  eyez
  1263.     fneg.s    fp0
  1264. L254
  1265. ;               f = exp( negDensitySquared * eyez*eyez
  1266.     fmove.x    fp7,fp1
  1267.     fmul.x    fp0,fp1
  1268.     fmul.x    fp0,fp1
  1269.     fmove.x    fp1,fp0
  1270.     fmove.d    fp0,-(a7)
  1271.     jsr    _exp__r
  1272.     addq.w    #$8,a7
  1273. ;               f = CLAMP( f, 0.0F, 1.0F );
  1274.     fcmp.s    #$.00000000,fp0
  1275.     fboge.b    L256
  1276. L255
  1277.     fmove.s    #$.00000000,fp0
  1278.     bra.b    L260
  1279. L256
  1280.     fcmp.s    #$.3F800000,fp0
  1281.     fbole.b    L258
  1282. L257
  1283.     fmove.s    #$.3F800000,fp0
  1284. L258
  1285. L259
  1286. L260
  1287. ;               index[i] = (GLuint) ((GLfloat) index[i
  1288.     fmove.l    0(a3,d2.l*4),fp1
  1289.     fmove.s    #$.3F800000,fp6
  1290.     fsub.x    fp0,fp6
  1291.     fmove.x    fp6,fp0
  1292.     fmul.s    $22FC(a2),fp0
  1293.     fadd.x    fp0,fp1
  1294.     fmove.l    fp1,d0
  1295.     move.l    d0,0(a3,d2.l*4)
  1296.     addq.l    #1,d2
  1297. L261
  1298.     cmp.l    d3,d2
  1299.     blo    L252
  1300. L262
  1301. ;         
  1302.     bra.b    L264
  1303. L263
  1304. ;         gl_problem(ctx, "Bad fog mode in gl_fog_ci_pixels")
  1305.     move.l    #L225,-(a7)
  1306.     move.l    a2,-(a7)
  1307.     jsr    _gl_problem
  1308.     addq.w    #$8,a7
  1309.     fmovem.x (a7)+,fp2/fp3/fp4/fp5/fp6/fp7
  1310.     movem.l    (a7)+,d2/d3/a2-a4
  1311.     unlk    a5
  1312.     rts
  1313. L264
  1314. ;         return;
  1315.     fmovem.x (a7)+,fp2/fp3/fp4/fp5/fp6/fp7
  1316.     movem.l    (a7)+,d2/d3/a2-a4
  1317.     unlk    a5
  1318.     rts
  1319.  
  1320. L225
  1321.     dc.b    'Bad fog mode in gl_fog_ci_pixels',0
  1322.  
  1323.     END
  1324.